#include<bits/stdc++.h>
using namespace std;
int t, n, m, l, v, idx, sum, suma, vis[100001];
long long  x, y, z, pr;
struct node
{
	long long d, v0, a, l, r;
}p[100001];
int main()
{
	freopen("detect.in","r",stdin);
	freopen("detect.out","w",stdout);
	scanf("%d",&t);
	while(t--)
	{
		idx=sum=suma=0;
		memset(vis,0,sizeof vis);
		scanf("%d%d%d%d",&n,&m,&l,&v);
		for(int i=1;i<=n;i++)
		{
			scanf("%lld%lld%lld",&x,&y,&z);
			if(z<0)
			{
				if(y>v)
				{
					int L=x, R=l, ans=l+1;
					long long k=v*v-y*y;
					while(L<=R)
					{
						int mid=L+R>>1;
						if(2ll*(mid-x)*z>k)
						{
							ans=mid;
							L=mid+1;
						}
						else
							R=mid-1;
					}
					if(ans<=l)
						p[++idx]={x,y,z,x,ans};
				}
			}
			else if(z==0)
			{
				if(y>v)
					p[++idx]={x,y,z,x,l};
			}
			else
			{
				if(y>v)
					p[++idx]={x,y,z,x,l};
				else
				{
					int L=x, R=l, ans=l+1;
					long long k=v*v-y*y;
					while(L<=R)
					{
						int mid=L+R>>1;
						if(2ll*(mid-x)*z>k)
						{
							ans=mid;
							R=mid-1;
						}
						else
							L=mid+1;
					}
					if(ans<=l)
						p[++idx]={x,y,z,ans,l};
				}
			}
		}
		bool fg=0;
		for(int i=1;i<=idx;i++)
			if(p[i].r!=l)
			{
				fg=1;
				break;
			}
		if(fg==0)
		{
			for(int i=1;i<=m;i++)
				scanf("%lld",&x);
			for(int i=1;i<=idx;i++)
				if(p[i].l<=x)
					sum++;
			if(sum==0)
				m++;
			printf("%d %d\n",sum,m-1);
			continue;
		}
		 // for(int i=1;i<=idx;i++)
		 // 	printf("%d %d\n",p[i].l,p[i].r);
		scanf("%lld",&pr);
		for(int i=2;i<=m;i++)
		{
			scanf("%lld",&x);
			bool flag=0;
			for(int j=1;j<=idx;j++)
				if(p[j].r<x && !vis[j] && p[j].l<=pr && p[j].r>=pr)
				{
					flag=1;
					break;
				}
			if(flag)
			{
				sum++;
				for(int j=1;j<=idx;j++)
					if(!vis[j] && p[j].l<=pr && p[j].r>=pr)
					{
						vis[j]=1;
						suma++;
					}
				 // cout<<pr<<endl;
			}
			pr=x;
		}
		int flag=0;
		for(int i=1;i<=idx;i++)
			if(!vis[i] && p[i].l<=pr && p[i].r>=pr)
			{
				vis[i]=1;
				suma++;
				flag=1;
			}
		sum+=flag;
		 // cout<<pr<<endl;
		printf("%d %d\n",suma,m-sum);

	}
	return 0;
}